package com.ricky.service_label.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ricky.common_util.result.Result;
import com.ricky.hosp.model.label.ImageLabel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*;

import java.io.*;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

@RestController
@Api(tags = "保存前端标记")
@RequestMapping("/admin/label")
public class LabelController {
    @ApiOperation(value = "保存标记为json文件")
    @PostMapping("/saveLabelAsJson/{fileName}")
    public Result saveLabel(@PathVariable String fileName, @RequestBody String jsonString) throws IOException {
        String savePath = saveAsJsonFile(fileName,jsonString);
        return Result.ok().message("标记文件写入成功，地址->"+savePath);
    }
    @ApiOperation(value = "批量保存标记为json文件")
    @PostMapping("/saveLabelAsJsonBatch")
    public Result saveLabelAsJsonBatch(@RequestBody String jsonStringArray) throws IOException {
        JSONArray jsonArray = JSONArray.parseArray(jsonStringArray);
        for (Object item:
             jsonArray) {
            JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(item));
            String filePath = jsonObject.get("imagePath").toString();
            String fileName = filePath.split("/")[1];
            fileName = fileName.substring(0,fileName.lastIndexOf("."));
            saveAsJsonFile(fileName, item.toString());
        }
        return Result.ok();
    }
    public String saveAsJsonFile(String fileName, String jsonString) throws IOException {
        //获取当前节点的根路径
        String filePath = ResourceUtils.getURL("classpath:").getPath();
        // 拼接文件名和后缀 得到文件完整路径
        String fullPath = filePath + File.separator + fileName + ".json";
        // 创建json文件
        File file = new File(fullPath);
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        if (file.exists()) { // 如果已存在,删除旧文件
            file.delete();
        }
        file.createNewFile();//创建新文件
//      将单引号转义一下，因为JSON串中的字符串类型可以单引号引起来的
        if(jsonString.contains("'")){
            jsonString = jsonString.replaceAll("'", "\\'");
        }
//      将双引号转义一下，因为JSON串中的字符串类型可以单引号引起来的
        if(jsonString.contains("\"")){
            jsonString = jsonString.replaceAll("\"", "\\\"");
        }
//         将回车换行转换一下，因为JSON串中字符串不能出现显式的回车换行
//        if(jsonString.contains("\r\n")){
//            jsonString = jsonString.replaceAll("\r\n", "\\u000d\\u000a");
//        }
//        //将换行转换一下，因为JSON串中字符串不能出现显式的换行
//        if(jsonString.contains("\n")){
//            jsonString = jsonString.replaceAll("\n", "\\u000a");
//        }
        // 将格式化后的字符串写入文件
        Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
        write.write(jsonString);
        write.flush();
        write.close();
        return fullPath;
    }
}
